package com.zf.validation.contraint;


import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;

/**
 * 自定义校验注解，message() ,groups() ,payload()是@Constraint要求必须要存在的
 * `@Constraint`表示这个注解是一个验证注解，并且指定了一个实现验证逻辑的验证器
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {PhoneValidator.class})
@Repeatable(value = Phone.List.class)
public @interface Phone {
    String message() default "手机号格式不正确"; // 错误信息

    Class<?>[] groups() default { }; // 分组校验时的分组

    Class<? extends Payload>[] payload() default { };

    /**
     * 自定义属性：电话格式，正则表达式
     */
    String regexp() default "";

    /**
     * Repeatable 注解的容器
     */
    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    @interface List {
        Phone[] value() default {};
    }
}
